home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / pascal / cpu_tp.com / CPU.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-05-15  |  2.1 KB  |  89 lines

  1. { CPU  }
  2.  
  3. { Determines the CPU and Math Co-processor }
  4.  
  5. { Copyright 1989 by Mark R. Boler - All Rights Reserved }
  6.  
  7. {-----------------------------------------------------------------------------}
  8.  
  9. {$A-}
  10. {$B-}    { Boolean complete evaluation off }
  11. {$D+}    { Debug information on            }
  12. {$I-}    { I/O checking off                }
  13. {$L+}    { Local symbols on                }
  14. {$N-}    { No numeric coprocessor          }
  15. {$R-}    { Range checking off              }
  16. {$S-}    { Stack checking off              }
  17. {$V-}    { No VAR-String checks            }
  18.  
  19. UNIT CPU;
  20.  
  21. INTERFACE
  22.  
  23. FUNCTION CPUInfo: WORD;
  24.  
  25. FUNCTION MainProcessor: STRING;
  26.  
  27. FUNCTION MathProcessor: STRING;
  28.  
  29. IMPLEMENTATION
  30.  
  31. CONST
  32.       NotTested = $FFFF;
  33.  
  34.       CPUID: WORD = NotTested;
  35.  
  36. FUNCTION CPUInfo: WORD; EXTERNAL;
  37.  
  38. {$L CPU.OBJ}
  39.  
  40. FUNCTION MainProcessor: STRING;
  41.  
  42. VAR
  43.       St: STRING[23];
  44.  
  45. BEGIN {MainProcessor}
  46.       IF (CPUID = NotTested) THEN CPUID:= CPUInfo;
  47.       CASE (CPUID AND $000F) OF
  48.            0: St:= '8088';
  49.            1: St:= '8086';
  50.            2: St:= 'V20';
  51.            3: St:= 'V30';
  52.            4: St:= '80188';
  53.            5: St:= '80186';
  54.          6,7: St:= '80286';
  55.          8,9: St:= '80386';
  56.          ELSE St:= 'Unknown';
  57.       END; {case}
  58.       CASE (CPUID AND $000F) OF
  59.          0, 1,
  60.          4..9: INSERT('intel ', St, 1);
  61.          2, 3: INSERT('NEC ', St, 1);
  62.       END; {case}
  63.       IF (CPUID >= 128) THEN INSERT('Defective ', St, 1);
  64.       MainProcessor:= St;
  65. END; {MainProcessor}
  66.  
  67. FUNCTION MathProcessor: STRING;
  68.  
  69. VAR
  70.       St: STRING[51];
  71.  
  72. BEGIN {MathProcessor}
  73.       IF (CPUID = NotTested) THEN CPUID:= CPUInfo;
  74.       CASE (CPUID AND $0030) OF
  75.            0: St:= 'No intel Numeric Coprocessor Detected';
  76.           16: St:= '8087';
  77.           32: St:= '80287';
  78.           48: St:= '80387';
  79.       END; {case}
  80.       IF (CPUID AND $0040) <> 0 THEN
  81.       BEGIN
  82.           IF ((CPUID AND $0030) > 0) THEN INSERT('intel ', St, 1);
  83.           INSERT('Weitek 1167, ', St, 1);
  84.       END; {if}
  85.       MathProcessor:= St;
  86. END; {MathProcessor}
  87.  
  88. END. {CPUID}
  89.